Cloud computing may refer to any type of datacenter in which some level of resources or management are provided off-site by a third party. A tenant is an individual user or organization of cloud computing resources and may include particular applications that run on cloud-based servers. Cloud computing may include data centers in which multiple tenants share a set of physical hardware resources, either by partitioning that divides the tenants up onto individual servers, or virtualization that allows multiple tenants to share the same physical server by giving each tenant its own virtual machine (or even a portion of virtual machine), or some combination of these two. In many cases, it is desirable for the cloud host to not expose to tenants the topography of the network or resources on which their applications are running, so that the host can make changes to the infrastructure, move tenants around, and upgrade resources over time in the interest of efficient management of the cloud-based service.
Cloud-based environments typically provide a level of management tools and infrastructure through which tenants can manage the resources assigned to their applications, and can sub-allocate particular resources assigned to them to particular activities. Management may also include the process of uploading new applications and data to be hosted by the cloud-based environment. The process of preparing a cloud-based environment for hosting a particular application or service may involve providing particular software workflows, databases, assemblies, and configuration files. Each of these may include numerous sub-items, such as software workflows, which comprise activities and sequencing information about activities within the workflow. In addition, items may include security information and other characteristics that define who can access and manage particular parts of a hierarchy or other set of items.
Unfortunately, physical divisions of the cloud-based platform often do not line up will with logical divisions of applications. It is non-trivial to build a resource model for interacting with a hosting infrastructure that manages and executes custom programs, including continuation-based programs, and supports multi-tenancy, high scalability, high density, and a uniform application-programming model. For example, although it may be sensible for the cloud-based provider to group all of a particular tenants data tables together and present these as one type of resource for management, the tenant may have a completely different logical view related to how the tenant thinks about and interacts with the data. For example, one data table related to a human resources department may have completely different characteristics and requirements from another data table related to accounting. Today's cloud-based infrastructure provides a model that is better suited to the cloud provider than to the way cloud tenants work with and think about data, applications, and other cloud-based entities.